// RAP [rh] external editor not supported
///*******************************************************************************
// * Copyright (c) 2000, 2010 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.internal.misc;
//
//import java.io.File;
//import java.io.IOException;
//import java.net.URL;
//
//import org.eclipse.core.runtime.CoreException;
//import org.eclipse.core.runtime.IConfigurationElement;
//import org.eclipse.core.runtime.IPath;
//import org.eclipse.core.runtime.IStatus;
//import org.eclipse.core.runtime.Platform;
//import org.eclipse.core.runtime.Status;
//import org.eclipse.jface.util.Util;
//import org.eclipse.osgi.util.NLS;
//import org.eclipse.swt.program.Program;
//import org.eclipse.ui.internal.WorkbenchMessages;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//import org.eclipse.ui.internal.registry.EditorDescriptor;
//import org.osgi.framework.Bundle;
//
//public class ExternalEditor {
// private IPath filePath;
//
// private EditorDescriptor descriptor;
//
// /**
// * Create an external editor.
// */
// public ExternalEditor(IPath newFilePath, EditorDescriptor editorDescriptor) {
// this.filePath = newFilePath;
// this.descriptor = editorDescriptor;
// }
//
// /**
// * open the editor. If the descriptor has a program then use it - otherwise build its
// * info from the descriptor.
// * @exception Throws a CoreException if the external editor could not be opened.
// */
// public void open() throws CoreException {
//
// Program program = this.descriptor.getProgram();
// if (program == null) {
// openWithUserDefinedProgram();
// } else {
// String path = ""; //$NON-NLS-1$
// if (filePath != null) {
// path = filePath.toOSString();
// if (program.execute(path)) {
// return;
// }
// }
// throw new CoreException(
// new Status(
// IStatus.ERROR,
// WorkbenchPlugin.PI_WORKBENCH,
// 0,
// NLS.bind(WorkbenchMessages.ExternalEditor_errorMessage, path),
// null));
// }
// }
//
// /**
// * open the editor.
// * @exception Throws a CoreException if the external editor could not be opened.
// */
// public void openWithUserDefinedProgram() throws CoreException {
// // We need to determine if the command refers to a program in the plugin
// // install directory. Otherwise we assume the program is on the path.
//
// String programFileName = null;
// IConfigurationElement configurationElement = descriptor
// .getConfigurationElement();
//
// // Check if we have a config element (if we don't it is an
// // external editor created on the resource associations page).
// if (configurationElement != null) {
// try {
// Bundle bundle = Platform.getBundle(configurationElement
// .getNamespace());
// // See if the program file is in the plugin directory
// URL entry = bundle.getEntry(descriptor.getFileName());
// if (entry != null) {
// // this will bring the file local if the plugin is on a server
// URL localName = Platform.asLocalURL(entry);
// File file = new File(localName.getFile());
// //Check that it exists before we assert it is valid
// if (file.exists()) {
// programFileName = file.getAbsolutePath();
// }
// }
// } catch (IOException e) {
// // Program file is not in the plugin directory
// }
// }
//
// if (programFileName == null) {
// // Program file is not in the plugin directory therefore
// // assume it is on the path
// programFileName = descriptor.getFileName();
// }
//
// // Get the full path of the file to open
// if (filePath == null) {
// throw new CoreException(
// new Status(
// IStatus.ERROR,
// WorkbenchPlugin.PI_WORKBENCH,
// 0,
// NLS.bind(WorkbenchMessages.ExternalEditor_errorMessage,programFileName),
// null));
// }
// String path = filePath.toOSString();
//
// // Open the file
//
// // ShellCommand was removed in response to PR 23888. If an exception was
// // thrown, it was not caught in time, and no feedback was given to user
//
// try {
// if (Util.isMac()) {
// Runtime.getRuntime().exec(
// new String[] { "open", "-a", programFileName, path }); //$NON-NLS-1$ //$NON-NLS-2$
// } else {
// Runtime.getRuntime().exec(
// new String[] { programFileName, path });
// }
// } catch (Exception e) {
// throw new CoreException(
// new Status(
// IStatus.ERROR,
// WorkbenchPlugin.PI_WORKBENCH,
// 0,
// NLS.bind(WorkbenchMessages.ExternalEditor_errorMessage,programFileName),
// e));
// }
// }
//}